import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

/* Layout */
import Layout from '@/layout';
import store from './modules/store';
import storeGoods from './modules/storeGoods';
import onlineOrder from './modules/onlineOrder';
import cash from './modules/cash';
import warning from './modules/warning';
import inventory from './modules/inventory';
import storeMoney from './modules/storeMoney';
import user from './modules/user';
import exchangeGoods from './modules/exchangeGoods';

/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
import error_500 from '@/views/500.vue';
export const constantRoutes = [
	{
		path: '/login',
		component: () => import('@/views/login/index'),
		hidden: true
	},
	{
		path: '/error_500',
		name: 'error_500',
		component: error_500,
		hidden: true
	},
	{
		path: '/',
		component: Layout,
		redirect: '/dashboard',
		children: [
			{
				path: 'dashboard',
				name: 'Dashboard',
				component: () => import('@/views/dashboard/index'),
				meta: { title: '首页', icon: 'zhuye' }
			}
		]
	},
	{
		path: '/networkError',
		name: 'networkError',
		component: () => import('@/views/networkError'),
		hidden: true
	},
	{
		path: '/404',
		component: () => import('@/views/404'),
		hidden: true
	}
];
// 拆分动态路由
export const asyncRoutes = [store, storeGoods, storeMoney, exchangeGoods, cash, warning, inventory, user];

const createRouter = () =>
	new Router({
		// mode: 'history', // require service support
		scrollBehavior: () => ({ y: 0 }),
		routes: constantRoutes
	});

const router = createRouter();

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
	const newRouter = createRouter();
	router.matcher = newRouter.matcher; // reset router
}

export default router;
